package com.kgis.map.geometry {
    import com.kgis.map.Map;
    import com.kgis.map.geometry.PointGeometry;
    import com.kgis.map.geometry.basetype.Extent;
    import com.kgis.map.geometry.basetype.Location;
    import com.kgis.map.style.IStyle;
    
    import flash.display.Sprite;

    /**
     * 几何体接口
     */
    public interface IGeometry {
        /**得到几何体的类型*/
        function getGeometryType():int

        /**得到几何体外接矩形范围*/
        function getExtent():Extent
			
		
	
		
		function getCenterPoint():PointGeometry;

        /**绘制几何体
         * @param sprite The Sprite object on which the geometry is drawn
         * @param geoStyle 几何体样式
         * @param labelStyle 标注样式
         * @param labelText 标注内容
         * @param Map 地图控件
         */
        function draw(sprite:Sprite, geoStyle:IStyle, map:Map):void;

        /**根据几何体获取标注位置
         * @return 最佳标注位置
         */
        function getLabelLocation():Location;

        /**根据几何体获取标注的旋转角度
         * @return 角度
         *  polyline  与最长线段平行的角度
         *  point  0
         *  polygon 0
         */
        function getLabelAngle():Number;

        /**
         * 几何体偏移一定的像素
         * @param  location 偏移量
         */
        function offset(location:Location):void;

        /**
         * 从几何体删除一个点
         * @param  point 点对象
         */
        function removePoint(point:PointGeometry):void;

        /**
         * 返回此几何对象与捕捉点最近的点
         * @param mousePoint 计算输入的点捕捉点
         * @param distance   容差距离单位m
         * @param snapPoint 捕捉到的点
         *
         * */
        function getTolerancePoint(mousePoint:PointGeometry, distance:Number, snapPoint:PointGeometry):int

        /**
         * 判断几何体是否规范
         * */
        function isValid():Boolean;
        /**
         * 判断规则几何体是否包含此点
         *@param point 包含点
         * */
        function hasPoint(point:PointGeometry):Boolean

    }
}